package com.example.loginproject.file

import android.content.Context
import com.example.loginproject.user.User
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import java.io.File
import java.io.FileReader
import java.io.FileWriter

class FileManage private constructor(){
    companion object{
        //第一套(生命周期长）
       // private var instance1:FileManage? = null
        //fun defaultInstance = instance1
        // 保存唯一的对象
        private var instance:FileManage? = null
        fun sharedInstance():FileManage{
            if(instance == null){
                //为保证线程安全，加个锁
                synchronized(this){
                    if (instance == null){
                        instance = FileManage()
                    }
                }
            }
            return instance!!
        }
    }
    private fun filePath(context: Context):String{
        //filesDir只能在Activity中用，Activity继承于Context
     return "${context.filesDir}/userInfo"
    }
    fun readData(context: Context):List<User>{
        if(fileExist(filePath(context))){
        FileReader(filePath(context)).use{
          val jsonString = it.readText()
            //匿名类，将jison转化为User的集合
            val token =object :TypeToken<List<User>>(){}
        return Gson().fromJson(jsonString,token)
        }
        }
        return emptyList()
    }
    fun fileExist(path:String):Boolean{
        val file = File(path)
        return file.exists()
    }
    fun writeData(context: Context,users:List<User>){
        FileWriter(filePath(context)).use{
            val jsonString = Gson().toJson(users)
            it.write(jsonString)
        }
    }

}